import db from '../db/mysql.js';
import dayjs from 'dayjs';

// 辅助函数：分钟转小时字符串
function minutesToText(minutes) {
    const hours = Math.floor(minutes / 60);
    const mins = minutes % 60;
    return hours ? `${hours}小时${mins}分钟` : `${mins}分钟`;
}

async function runTests() {
    try {
        console.log('✅ 开始数据库功能测试...\n');

        // -------------------------------
        // 1️⃣ 创建测试表
        // -------------------------------
        //     console.log('➡️ 创建测试表 test_users');
        //     await db.execute(`
        //   CREATE TABLE IF NOT EXISTS test_users (
        //     id INT AUTO_INCREMENT PRIMARY KEY,
        //     name VARCHAR(50),
        //     age INT,
        //     created_at DATETIME
        //   ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
        // `);
        //     console.log('✅ 表创建完成\n');

        // -------------------------------
        // 2️⃣ 批量插入测试
        // -------------------------------
        // console.log('➡️ 批量插入数据...');
        // const now = dayjs().format('YYYY-MM-DD HH:mm:ss');
        // const users = Array.from({ length: 5 }).map((_, i) => [`user_${i + 1}`, 20 + i, now]);
        // await db.batchInsert('test_users', ['name', 'age', 'created_at'], users);
        // console.log('✅ 插入完成\n');

        // -------------------------------
        // 3️⃣ 查询测试
        // -------------------------------
        // console.log('➡️ 查询所有用户...');
        // const allUsers = await db.query('SELECT * FROM test_users');
        // console.table(allUsers);

        // -------------------------------
        // 4️⃣ 批量更新测试
        // -------------------------------
        // console.log('➡️ 批量更新用户年龄...');
        // const updates = allUsers.map(u => ({
        //     id: u.id,
        //     age: u.age + 5
        // }));
        // await db.batchUpdate('test_users', 'id', updates);
        // console.log('✅ 批量更新完成\n');
        //
        // const updatedUsers = await db.query('SELECT * FROM test_users');
        // console.table(updatedUsers);

        // -------------------------------
        // 5️⃣ 批量删除测试
        // -------------------------------
        // console.log('➡️ 批量删除部分用户...');
        // const deleteIds = updatedUsers.slice(0, 2).map(u => u.id);
        // await db.batchDelete('test_users', 'id', deleteIds);
        // console.log('✅ 删除完成\n');
        //
        // const remaining = await db.query('SELECT * FROM test_users');
        // console.table(remaining);

        // -------------------------------
        // 6️⃣ 事务测试
        // -------------------------------
        // console.log('➡️ 测试事务...');
        // await db.transaction(async (conn) => {
        //     await conn.execute('UPDATE test_users SET age = age + 1 WHERE id = ?', [remaining[0].id]);
        //     await conn.execute('UPDATE test_users SET age = age + 1 WHERE id = ?', [remaining[1].id]);
        //     // throw new Error('模拟错误'); // 取消注释可测试回滚
        // });
        // console.log('✅ 事务执行完成\n');

        // const afterTx = await db.query('SELECT * FROM test_users');
        // console.table(afterTx);
        //
        // console.log('🎉 所有测试执行完成！');


        const startDate = '2025-10-01';
        const endDate = '2025-10-05';
        const sql = `
                  SELECT douyin_nickname, anchor,
                         SUM(daily_gmv) AS sum_gmv,
                         SUM(daily_cost) AS sum_cost,
                         SUM(actual_roi) AS sum_actual_roi,
                         SUM(daily_live_mins) AS sum_live_mins
                  FROM dd_self_live_summary
                  WHERE \`date\` BETWEEN ? AND ?
                  GROUP BY douyin_nickname, anchor
                `;
        const zhi_bo_datas = await db.query(sql, [startDate, endDate]);
        const grouped = {};
        zhi_bo_datas.forEach(data => {
            const douyin_nickname = data.douyin_nickname;//抖音号昵称
            if (!grouped[douyin_nickname]) {
                grouped[douyin_nickname] = [];
            }
            const sum_live_mins = data.sum_live_mins
            const sum_live_mins_ch = minutesToText(sum_live_mins)
            data.sum_live_mins_ch = sum_live_mins_ch
            grouped[douyin_nickname].push(data);
        });


        console.log(grouped)


        console.table(zhi_bo_datas);


    } catch (err) {
        console.error('❌ 测试出错：', err);
    } finally {
        process.exit(0);
    }
}


runTests();
